let fs = require("fs");
let fsPromises = fs.promises;//使用支持promise的api
// fs模块的promise的api演示
// fsPromises.readFile("1.txt", {encoding: "utf-8"})
//     .then(data => {
//         console.log(data);
//         return fsPromises.readFile("2.txt", {encoding: "utf-8"});
//     }).then(data => {
//     console.log(data);
//         return fsPromises.readFile("3.txt", {encoding: "utf-8"});
//     }).then(data => {
//         console.log(data);
//     });

//ES6提供的异步函数处理
async function readFile() {
    // await ，只能在async修改的函数中使用，如果支持promise，那么返回值就是promise中的resolve回调函数的参数
    // 在异步函数，等待调用的异步函数执行完毕之后，再继承往下执行函数中的代码，即将异步函数变成同步函数执行
    let result = await fsPromises.readFile("1.txt", {encoding: "utf-8"});
    console.log(result);
    result = await fsPromises.readFile("2.txt", {encoding: "utf-8"});
    console.log(result);
    result = await fsPromises.readFile("3.txt", {encoding: "utf-8"});
    console.log(result);

    result = await t1();
    console.log(result);
}

readFile();

function t1() {
    console.log("t1");

    return "t1";
}

//catch和then不是一定要加的
// .catch(err => {
//
// })

//回调地狱
// fs.readFile("1.txt", "utf-8", function (err, data) {
//     console.log(data);
//     fs.readFile("2.txt", "utf-8", function (err, data) {
//         console.log(data);
//         fs.readFile("3.txt", "utf-8", function (err, data) {
//             console.log(data);
//         });
//     });
// });

//避免回调地狱
// new Promise(function (resolve, reject) {
//     fs.readFile("3fdfd.txt", "utf-8", function (err, data) {
//         // console.log(data);
//         if (err) {
//             reject(err);
//         } else {
//             resolve(data);
//         }
//     });
// }).then(function (data) {
//     console.log("then");
//     console.log(data);
// })
//     .catch(function (err) {
//         console.log("出错了");
//         console.log(err);
//     });

console.log("程序执行完毕");